전통적으로 지리정보는 .shp 확장자명을 갖는 ESRI Shapefile에 저장을 했다. *.shp, *.dbf, *.shx 파일이 나눠서 저장되어 있다. 이로 인해서 ESRI Shapefile 지도정보 파일은 디렉토리에 담겨지게 된다.
*.shp: geometry 정보(점, 선, 다각형)*.dbf: 각 geometry에 대한 속성정보 저장*.shx: geometry와 속성(attributes) 정보 연결*.prj: 좌표계 정보 저장R 에서 ESRI Shapefile 파일을 저장하면 S4 SpatailPolygonsDataFrame으로 저장된다. 따라서, 점/선/다각형이 담긴 geometry와 데이터프레임이 연결되어 저장되어 있다.
실제 세상을 지도로 표현함에 있어 두가지 방식을 사용한다. 하나는 벡터(vector)로 표현하는 것이고 OGR을 사용하고, 또 다른 하나는 격자(Grid), 래스터(raster)로 표현하는 것으로 GDAL을 아래에 각각 깔고 R로 불러와서 사용하게 된다.
좌표계(CRS, Coordinate Reference System)는 둥근 지구를 2차원 평면에 투영(projection)하는 다양한 방법을 지칭한다. 좌표계를 제작할 때 각기 다른 목적에 맞춰 제작되었기 때문에 지리정보를 활용함에 있어 적절한 좌표계를 채택하여활용하는 것이 중요하다. 많이 사용되는 좌표계는 다음이 있다. WGS84(WGS 1984, EPSG:4326, WGS84)는 세계 지구 좌표 시스템(World Geodetic System, WGS) 1984년에 제정된 범 지구적 측위 시스템으로 지도학, 측지학, 항법에 많이 사용된다.
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +units=m +no_defs+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=bessel +units=m +no_defs +towgs84=-145.907,505.034,685.756,-1.162,2.347,1.592,6.342R에서 공간 지리 통계 및 공간 지리 데이터를 다루는 팩키는 rgdal, sp, rgeos가 개발되어 사용되고 있었다.
sp: R에서 공간 데이터(spatial data)를 표현하는 클래스와 메쏘드 자료구조.rgdal: R과 GDAL (Geospatial Data Abstraction Library) and PROJ4 라이브러리를 연결시키는 인터페이스 팩키지 - 래스터 / 벡터 지리공간 데이터 형식과 좌표 변환 기능 담당rgeos: R과 GEOS - Geometry Engine 라이브러리를 연결시키는 인터페이스 팩키지 - 면적, 둘레 길이, 거리, 다양한 지도 연산(dissolve, buffer, overlap, union, contains, …)하지만, 2016년 10월 20일 sf가 발표되면서 sp, rgeos, rgdal 3개 핵심 팩키지가 하나로 통합되었다. sp 팩키지 저자 Edzer Pebesm가 sp를 주도하고 있으며 tidyverse와 호환되고 파이프 구문 등 철학을 공유하고 있다.
sp: sp: Classes and Methods for Spatial Datasf: sf
stars: Spatiotemporal tidy arrays for Rggmap: ggmap: Spatial Visualization with ggplot2cartography: Create and integrate maps in your R workflow! - Base 그래픽에 기반을 두고 있으며 기본적인 지도 뿐만 아니라 고급 지도 표현도 가능하다.sp: sf 이전 시절
sp, rgdal, rgeos를 결합하여 사용하던 옛시절이 있었다.
sp: 벡터 혹은 래스터 공간정보 데이터를 다루기 위한 기본 자료구조.
rgdal: GDAL/OGR을 바탕으로 공간데이터를 불러오고 저장하는 역할을 담당.
rgeos: 파이썬 shapely처럼 GEOS를 바탕으로 다양한 geometry 연산작업을 수행(union, intersections, buffer 등).
sf 통일 시대
실세계에서 객체가 어떻게 표현되어야 하는지를 모사하는 ISO 19125-1:2004 표준 Simple Feature를 충실히 따름.
sf의 기본은 데이터프레임
sp, rgdal, rgeos 팩키지 모든 기능을 sf 하나에 담아냄.
sp, rgdal 보다 설치하기 쉽고 훨씬 더 빠르고 확장성이 뛰어남.
GADM: GADM maps and data
sp)sf)tigris: Census TIGER/Line shapefilesrworldmap: Mapping Global Datageojson 파일형식, 좌표계는 WGS84 (EPSG:4326), 인코딩 UTF-8.GADM 지도 데이터Download GADM data (version 3.6) 웹사이트에서 레벨2(level-2)까지 시군구 데이터를 불러온다. sf 팩키지로 바로 작업할 수 있도록 R (sf) level2를 다운로드 받아 시각화한다.
“행정표준코드관리시스템” → 자주묻는질문 → 게시판글 1번: "
행정동코드(전체) 및 법정동·행정동코드 매핑 자료 받는 방법은 어떻게 되나요?"
지도관련하여 주무관청이 다르고 서로 추구하는 바도 달라 동일한 지도위에 서로 다른 코드를 정해 사용하고 있다. 과거에는 서로 교차업무를 할 일이 없어 독립적인 코드체계가 그다지 문제가 되지 않았으나, 오늘날에는 코딩 작업하는 개발자에게 커다란 고통을 수반하고 있다. 크게 통계청과 행정안전부로 나눠 살펴볼 수 있다.
통계청 → 통계분류포털 사이트에서,
즉, 통계청 → 통계분류포털 → 특수/일반/국제/행정구역분류를 쫓아가게 되면, 한국행정구역분류에서 대한 엑셀파일을 다운로드 받거나 웹화면으로 조회를 할 수도 있다. 결국 .shp 파일에 내재되어 있는 행정동 정보와 행정구역코드를 시도, 시군구, 읍면동으로 구분해 나갈 수 있다.
행정안전부 행정동 전체 코드의 경우, 행정동 전체코드 및 법정동·행정동코드 매핑 자료는 행정안전부 지방행정실 홈페이지에서 자료를 제공하고 있다.10
좌측 메뉴에서 “지방자치분권실” → “주민등록 및 인감” → “주민등록 및 인감” 을 따라 ’주민등록 및 인감 게시판’에서 ’주민등록주소코드 변경내역의 최신일자’로 된 제목을 클릭하여 압축파일을 다운로드한다.
압축해제하게 되면 다음과 같은 형식의 파일이 압축이 풀려 디렉토리에 저장된다.
주민등록주소코드 변경내역(2019.03.01. 시행) jscode20190301.zip 파일을 압축풀게 되면 KIKcd_H.20190301.xlsx 파일이 행정동 기준으로 나온다. 이를 활용하여 행정동코드를 확인할 수 있고 앞서 대한민국 최신 행정구역(SHP) 다운로드에서 내려받은 shapefile과 연결하여 수월(?)하게 공간정보 관련 작업을 수행할 수 있게 된다.
rspatial 생태계11과거 많이 생산된 ESRI .shp 지도데이터와 표준으로 자리잡고 있는 .gpkg 파일을 read_sf() 함수로 불러 읽어들인다. 그리고 나서 tmap 팩키지의 다양한 지도 생성 동사를 동원하여 빠르게 시각화한다.
Data Carpentry, “Introduction to Geospatial Raster and Vector Data with R”↩
OSGeo(Open Source GeoSpatial) 한국어 지부 - OSGeo Korean Chapter, “한국 주요 좌표계 EPSG코드 및 proj4 인자 정리”"↩
Wolfgang SCHEUCHER (Solitec), “Coordinate Reference System”↩
VISUALIZING STORY - STORY ABOUT TRUTH AND LIFE, “한국 주요 좌표계 EPSG코드 및 PROJ4 인자정리”↩
Sébastien Rochette, Dorris Scott, Jakub Nowosad (2020), “First steps in spatial handling and visualization”↩
Kim A. Etienne C. Timothée G., “Spatial Data and Cartography with R”, SatRday Paris February 2019↩
J. Nowosad, R. Lovelace (2020), “Recent changes in R spatial and how to be ready for them”, Why R↩
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com